SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[paAsignarNroDeOrdenintercalado] 
@IDConvocatoria INT

AS
SET NOCOUNT ON
DECLARE @Inscripcion INT
DECLARE @Agente INT
DECLARE @Localidad VARCHAR(100)
DECLARE @LocalidadT VARCHAR(100)
SET @LocalidadT = 'Nothing'
DECLARE @CargoGenerico VARCHAR(100)
DECLARE @CargoGenericoT VARCHAR(100)
SET @CargoGenericoT = 'Nothing'
DECLARE @AsignaturaGenerica VARCHAR(100)
DECLARE @AsignaturaGenericaT VARCHAR(100)
SET @AsignaturaGenericaT = 'Nothing'
DECLARE @CategoriaDeTitulo INT
DECLARE @Puntaje FLOAT
DECLARE @PromedioTitulo FLOAT
DECLARE @Especifico VARCHAR(1)
DECLARE @Counter INT
DECLARE @Nivel INT
DECLARE @NivelT INT
DECLARE @Modalidad INT
DECLARE @ModalidadT INT
DECLARE @Ciclo INT
DECLARE @CicloT INT
DECLARE @Convocatoria INT
DECLARE @ConvocatoriaT INT

DECLARE @Agentet as INT

DECLARE @tipoconvocatoria as int
--DECLARE @TitEspecifico VARCHAR(1)

SET @NivelT = 0
SET @modalidad=0
SET @modalidadT=0
SET @CicloT = 0
SET @ConvocatoriaT  = 0
SET @Counter = 1
Set @Agentet=0
Set @Agente=0

DECLARE @error INT
SET @error = 0

DECLARE @SituacionRevista as int
DECLARE @tit as varchar (2)

BEGIN TRANSACTION

--este update deberia hacerlo cuando selecciona la convocatoria para poner el orden de merito
--set @Convocatoria=28
--set @TitEspecifico='N'

--update tb_parametros set valor1=cast(@IDconvocatoria as varchar)   where idparametro=65

--set @Convocatoria=(select cast(valor1 as int) from tb_parametros where idparametro=65)
--set @Tit=(select cast(valor2 as varchar) from tb_parametros where idparametro=65)

--set @tipoconvocatoria= (select tipoconvocatoria from tb_convocatorias where idconvocatoria=@idconvocatoria)

UPDATE tb_InscripcionesConvocatorias SET NroDeOrden = 0 WHERE Convocatoria = @IDConvocatoria  AND (Asignaturagenerica IN (7700, 7750)) AND (Localidad IN (21, 72)) --Blanqueo los nrodeorden anteriores

set @tipoconvocatoria=1


DECLARE X CURSOR FORWARD_ONLY FOR
SELECT [idInscripcionConvocatoria],agente, [Convocatoria], max(CargoGenerico) CargoGenerico ,max( [AsignaturaGenerica]) as AsignaturaGenerica, [Localidad], max([Puntaje]) puntaje,  [CategoriaDeTitulo], [PromedioTitulo], [Nivel], [Ciclo], [Modalidad]
FROM tb_inscripcionesconvocatorias --where localidad='toay' and nivel=4 and ciclo=2
WHERE (Convocatoria =27) AND (Asignaturagenerica IN (7155,7560)) AND (Localidad IN (21, 72))
group by [idInscripcionConvocatoria],agente, [Convocatoria], CargoGenerico ,AsignaturaGenerica, [Localidad], puntaje,  [CategoriaDeTitulo], [PromedioTitulo], [Nivel], [Ciclo], [Modalidad]
ORDER BY Convocatoria, Nivel, Ciclo, Localidad,CategoriadeTitulo, Puntaje DESC, PromedioTitulo DESC


OPEN X

	FETCH NEXT FROM X INTO @Inscripcion,@agente,@Convocatoria, @CargoGenerico,@AsignaturaGenerica,@Localidad, @Puntaje, @CategoriaDeTitulo,@PromedioTitulo, @Nivel, @Ciclo, @Modalidad --@Convocatoria, @Nivel, @Modalidad,@Ciclo, @Inscripcion, @Agente, @Localidad, @CargoGenerico, @AsignaturaGenerica,  @CategoriaTitulo, @Puntaje, @Promedio, @Especifico,@SituacionRevista,@tit

	WHILE @@FETCH_STATUS = 0
                   BEGIN

		SELECT @ConvocatoriaT = @Convocatoria, @agenteT = @Agente, @NivelT = @Nivel, @ModalidadT= @Modalidad,@CicloT = @Ciclo, @LocalidadT = @Localidad 
	
		WHILE @Convocatoria = @ConvocatoriaT AND @Nivel = @NivelT AND @Ciclo = @CicloT AND @Localidad = @LocalidadT and @@FETCH_STATUS = 0
                                      BEGIN
     
			   print 'Agente  ' +  cast(@Agente as varchar) + '  Agentet  ' + cast(@AgenteT as varchar)
			if @agentet <> @agente 
			begin	
				SET @Counter = @Counter + 1
				SELECT  @AgenteT = @Agente		
			end
			
			 print  'inscripcion  ' + cast(@Inscripcion as varchar)
		              print 'orden  ' + cast(@Counter as varchar)
                                               -- print @Convocatoria 
 			--print  @Nivel 
			--print @Modalidad
                                             
			 --print @Ciclo 				

--		UPDATE tb_InscripcionesConvocatorias SET NroDeOrden = @Counter, Puntaje = @Puntaje, CategoriadeTitulo = @CategoriaTitulo, PromedioTitulo=@Promedio, TituloEspecifico = @Especifico WHERE IdInscripcionConvocatoria = @Inscripcion
			UPDATE tb_InscripcionesConvocatorias SET NroDeOrden = @Counter WHERE  IdInscripcionConvocatoria = @Inscripcion
			IF @@error <> 0 BEGIN
				SET @error = @@error
				GOTO Salir
			                                 END

			FETCH NEXT FROM X INTO @Inscripcion,@agente,@Convocatoria, @CargoGenerico,@AsignaturaGenerica,@Localidad, @Puntaje, @CategoriaDeTitulo,@PromedioTitulo,  @Nivel, @Ciclo, @Modalidad

		END
		SET @Counter = 0

	END


CLOSE X
DEALLOCATE X


Salir:
IF @error <> 0 BEGIN
	ROLLBACK TRANSACTION
END
ELSE BEGIN
	COMMIT TRANSACTION
END
GO
